import logging
import redis

# 先在当前类中定义配置的类，并从中加载配置
class Config(object):
    ''' 工程配置信息'''
    # DEBUG = True

    # 导入数据库扩展，并在配置中填写相关配置
    # 数据库的配置信息
    # SQLALCHEMY_DATABASE_URI = '数据库类型://账号:密码@数据库IP:数据库端口/数据库名称'
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/news_database"
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    # 默认日志等级
    LOG_LEVEL = logging.DEBUG

    # 创建redis存储对象，并在配置中填写相关配置
    #redis配置
    REDIS_PORT = 6379
    REDIS_HOST = '127.0.0.1'
    REDIS_DATA_DB = 0
    REDIS_SESSION_DB = 1


    # 设置密钥，可以通过 base64.b64encode(os.urandom(48)) 来生成一个指定长度的随机字符串
    SECRET_KEY = "SNQTyGi1VvWECj9TvC/+kq3oujee2kTfQUs8yCM6xX9Yjq52v54"
    # flask_session 的配置信息
    SESSION_TYPE = "redis"  #指定session保存到redis中
    SESSION_USE_SIGNER = True  # 让 cookie 中的 session_id 被加密签名处理
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)  # 使用 redis 的实例
    PERMANENT_SESSION_LIFETIME = 86400  # session 的有效期，单位是秒


'''
项目多种配置
一个web程序在开发阶段可能与生产阶段所需要的配置信息可能不一样，所以为了实现此功能，可以给不同情况创建不同的配置类，比如开发阶段使用的配置类名为 DevelopementConfig，生产阶段使用的配置类名为 ProdutionConf
'''


# 项目开发阶段的模式
class DevelopementConfig(Config):
    '''开发模式配置'''
    DEBUG = True
    LOG_LEVEL =logging.DEBUG


# 项目上线模式配置
class ProductionConfig(Config):
    pass  # 默认 DEBUG = False

# 定义配置字典
config = {"development": DevelopementConfig,
          "production": ProductionConfig
          }